For many years voice telephone service was implemented over a circuit switched network commonly known as the public switched telephone network (PSTN) and controlled by a local telephone service provider. In such systems, the analog electrical signals representing the conversation are transmitted between the two telephone handsets on a dedicated twisted pair copper wire circuit. More specifically, each telephone handset is coupled to a local switching station on a dedicated pair of copper wires known as a subscriber loop. When a telephone call is placed, the circuit is completed by dynamically coupling each subscriber loop to a dedicated pair of copper wires between the two switching stations.
More recently, the copper wires, or trunk lines between switching stations have been replaced with fiber optic cables. A computing device digitizes the analog signals and formats the digitized data into frames such that multiple conversations can be transmitted simultaneously on the same fiber. At the receiving end, a computing device reforms the analog signals for transmission on copper wires. Twisted pair copper wires of the subscriber loop are still used to couple the telephone handset to the local switching station.
More recently yet, voice telephone service has been implemented over the Internet. Advances in the speed of Internet data transmissions and Internet bandwidth have made it possible for telephone conversations to be communicated using the Internet's packet switched architecture and the TCP/IP protocol.
Software is available for use on personal computers which enable the two-way transfer of real-time voice information via an Internet data link between two personal computers (each of which is referred to as an end point), each end point computer includes appropriate hardware for driving a microphone and a speaker. Each end point operates simultaneously as both a sender of real time voice data and as a receiver of real time voice data to support a full duplex voice conversation. As a sender of real time voice data, the end point computer converts voice signals from analog format, as detected by the microphone hardware, to digital format. The software then facilitates data compression down to a rate compatible with the end point computer's data connection to an Internet Service Provider (ISP) and facilitates encapsulation of the digitized and compressed voice data into the TCP/IP protocol, with appropriate addressing to permit communication via the Internet.
As a receiver of real time voice data, the end point computer and software reverse the process to recover the analog voice information for presentation to the other party via the speaker associated with the receiving computer.
To promote the wide spread use of internet telephony, the International Telephony Union (ITU) had developed a set of standards for internet telephony. The ITU Q.931 standard relates to call signaling and set up, the ITU H.245 standard provides for negotiation of channel usage and capabilities between the two endpoints, and the ITU H.323 standard provides for real time voice data between the two end points to occur utilizing User Datagram Protocol (UDP) frames to deliver the real time voice data.
A problem associated with standard ITU Internet telephony is that if one of the end points is behind a network address translation (NAT) firewall, data can not be sent on the required inbound UDP channels. More specifically, ITU Internet telephony standards provide for each endpoint to send audio data to the other endpoint on UDP channels negotiated as part of the H.245 messaging. While the endpoint behind the NAT firewall can readily send audio data on an outbound UDP channel, the NAT server will not recognize UDP frames on the inbound UDP channels.
What is needed is a method for communicating audio data frames between two devices, wherein one of the devices is behind a NAT firewall.